<?php

namespace common\helper;

class DocHelper
{
    /**
     * 获取pdf页数
     * @param $path
     * @return int
     * @throws \Exception
     */
    public static function getPdfPages($path)
    {
        if (!file_exists($path)) {
            throw new \Exception('文件不存在');
        }
        if (!is_readable($path)) {
            throw new \Exception('文件不可读');
        }
        $pdfContent = file_get_contents($path);
        $pages = preg_match_all("/\/Page\W/", $pdfContent, $dummy);

        // 返回页数
        return $pages;
    }

    /**
     * office文件转pdf
     * @param $officeFile
     * @param $outDir
     */
    public static function officeFile2Pdf($officeFile, $outDir)
    {
        exec("soffice --invisible --convert-to pdf:writer_pdf_Export {$officeFile} --outdir {$outDir}");
    }

    /**
     * pdf文件转svg
     * @param $pdfFile
     * @param $svgFile
     * @param string $page
     * @return string
     */
    public static function pdf2svg($pdfFile, $svgFile, $page = 'all')
    {
        //pdf2svg <input.pdf> <output.svg> [<pdf page no. or "all" >]
        exec("pdf2svg {$pdfFile} {$svgFile} {$page}", $output, $return);
        return var_export($output, 1) . var_export($return, 1);
    }

    public static function pdf2jpg($file_name)
    {
        $file_name = basename($file_name, '.pdf');
        $img = new \imagick($file_name . '.pdf');
        $img->setImageBackgroundColor('white');
        //$img = $img->flattenImages();
        $img->setResolution(300, 300);
        $num_pages = $img->getNumberImages();
        $img->setImageCompressionQuality(100);
        $imgs = array();
        for ($i = 0; $i < $num_pages; $i++) {
            $img->setIteratorIndex($i);
            $img->setImageFormat('jpeg');
            $img->writeImage($file_name . '-' . $i . '.jpg');
            $imgs[] = $file_name . '-' . $i . '.jpg';
        }
        $img->destroy();
        return $imgs;
    }

    public static function pdf2txt($pdfFile, &$output = null, &$return_var = null)
    {
        exec("pdf2txt.py -n -S {$pdfFile}", $output, $return_var);
    }

    /**
     * svg文件转png文件
     * @param $svgFile
     */
    public static function svg2png($svgFile)
    {
        //https://github.com/sterlp/svg2png
        echo "/root/svg2png -f {$svgFile}" . PHP_EOL;
        exec("/root/svg2png -f {$svgFile}");
    }

    /**
     * 优化压缩svg
     * @param $dir
     */
    public static function svgOptimization($dir)
    {
        exec("svgo -f {$dir}");
    }
}